package com.naiterui.ehp.bs.doctor.vo;

import java.io.Serializable;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@ApiModel(value = "BaseInfoVO", description = "医生APP端首页数据接")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class BaseInfoVO implements Serializable {

    /**
     * 健康检查申请入口：不显示<code>EXAMINE_DOCTOR_FLAG_FALSE</code>
     */
    public static final int EXAMINE_DOCTOR_FLAG_FALSE = 0;
    /**
     * 健康检查申请入口：显示<code>EXAMINE_DOCTOR_FLAG_TRUE</code>
     */
    public static final int EXAMINE_DOCTOR_FLAG_TRUE = 1;

    /**
     * 是医嘱处方医生
     */
    public static final int RECORD_RECOM_FLAG_TRUE = 1;

    /**
     * 不是医嘱处方医生
     */
    public static final int RECORD_RECOM_FLAG_FALSE = 0;

    /**
     * 字段或域定义：<code>serialVersionUID</code>
     */
    private static final long serialVersionUID = 6219070182252005730L;

    /**
     * 医生id：<code>doctorId</code>
     */
    @ApiModelProperty(value = "医生ID")
    private Long doctorId;

    /**
     * 医生姓名：<code>name</code>
     */
    @ApiModelProperty(value = "医生姓名")
    private String name;

    /**
     * 医生科室id：<code>departmentId</code>
     */
    @ApiModelProperty(value = "医生科室id")
    private Integer departmentId;

    /**
     * 医生头像url：<code>headerImageUrl</code>
     */
    @ApiModelProperty(value = "医生头像url")
    private String headerImageUrl;

    /**
     * 认证状态：<code>status</code>
     * 认证状态0.未认证 1.认证中 2.已认证 3.不通过
     */
    @ApiModelProperty(value = "认证状态0.未认证 1.认证中 2.已认证 3.不通过")
    private Integer status;

    /**
     * 推荐用药试用次数
     */
    @ApiModelProperty(value = "推荐用药试用次数")
    private int recomTrialTimes;

    /**
     * 账户可提现积分
     */
    @ApiModelProperty(value = "账户可提现积分")
    private int applyingPoint;

    /**
     * 评价数
     */
    @ApiModelProperty(value = "评价数")
    private int commentCount;

    /**
     * 首页banner轮盘：<code>banner</code>
     */
    @ApiModelProperty(value = "首页banner轮盘")
    private List<BannerVO> banner;

    /**
     * 浮动层
     */
    @ApiModelProperty(value = "浮动层")
    private List<BannerVO> layer;

    /**
     * 医生备案状态 0:未申请备案，1:备案审核中，2:备案成功，3:备案失败, 4:要求备案
     */
    @ApiModelProperty(value = "备案状态 0:未申请备案，1:备案审核中，2:备案成功，3:备案失败, 4:要求备案")
    private Integer recordStatus;

    @ApiModelProperty(value = "实名认证状态 1:未实名，1:已实名")
    private Integer realnameStatus;

    /**
     * 是否显示商品佣金指数：0-否，1-是：<code>showGoodsCommission</code>
     */
    @ApiModelProperty(value = "是否显示商品佣金指数：0-否，1-是")
    private Integer showGoodsCommission;

    /**
     * 阳光化标示 1不是阳光化，2是阳光化
     */
    @ApiModelProperty(value = "阳光化标示 1不是阳光化，2是阳光化")
    private Integer isPublic;

    /**
     * 上一次证书认证登记的手机号
     */
    @ApiModelProperty(value = "上一次证书认证登记的手机号")
    private String lastCertificationPhone;

    @ApiModelProperty(value = "0:不显示,1:小七指数,2:市场积分")
    private Integer showCommission;

    /**
     * 是否能够推荐检查单：<code>examine</code>
     */
    @ApiModelProperty(value = "健康检查申请入口，0：不显示，1：显示")
    private int examine;
    /**
     * 是否医嘱处方医生
     */
    @ApiModelProperty(value = "是否医嘱处方医生，1：是，0：不是")
    private int recordRecom;

    @ApiModelProperty(value = "主诉和既往史必填标识,1:必填,0:非必填")
    private Integer requiredFlag;

    /**
     * 是否安全用药范围医生
     */
    @ApiModelProperty(value = "是否安全用药范围医生，1：是；0：否")
    private int recomSafe;

    /**
     * 医生科室
     */
    @ApiModelProperty(value = "科室名称")
    private String departmentName;

    /**
     * 医生医院
     */
    @ApiModelProperty(value = "医院名称")
    private String hospitalName;

    /**
     * 最近一条公告或消息
     */
    @ApiModelProperty(value = "最近一条公告或消息(有可能为空)")
    @JsonInclude(Include.NON_NULL)
    private LateNoticeVO lateTitle;

    /**
     * 医生一级科室或自定义科室3.4添加
     */
    @ApiModelProperty(value = "一级科室或自定义科室名称")
    private String firstDepartmentName;

    /**
     * 处方通过率
     */
    @ApiModelProperty(value = "处方通过率")
    private String recomAuditRate;

    /**
     * 邀请患者数
     */
    @ApiModelProperty(value = "邀请患者数")
    private Integer personalPatientNum;

    /**
     * 累计处理求药数
     */
    @ApiModelProperty(value = "累计处理求药数")
    private Integer requireRecomNum;

    /**
     * 待处理处理求药数
     */
    @ApiModelProperty(value = "待处理处理求药数")
    private Integer untreatedRequireNum;

    /**
     * 待接诊视频问诊数
     */
    @ApiModelProperty(value = "待接诊视频问诊数")
    private Integer videoConsultNum;

    /**
     * 快捷登录状态：0.未设置 1.已设置 2.下次不再提示
     */
    @ApiModelProperty(value = "快捷登录状态：0.未设置 1.已设置 2.下次不再提示")
    private Integer fastLoginStatus;

    /**
     * 累计处方数
     */
    @ApiModelProperty(value = "累计处方数")
    private Integer medicationRecomNum;

    /**
     * 累计问诊数量
     */
    @ApiModelProperty(value = "累计问诊数量")
    private Integer consultNum;

    /**
     * 累计收入
     */
    @ApiModelProperty(value = "累计收入")
    private Integer allConsultPrice;

    @ApiModelProperty(value = "医生职称id")
    private Integer titleId;

    @ApiModelProperty(value = "职称")
    private String title;

    @ApiModelProperty(value = "医生手机号")
    private String phone;
}
